The invention relates generally to interconnect routing, and more particularly to routing interconnects for a network, as may be found in an integrated circuit.
Integrated circuits comprise many interconnects for connecting blocks of circuitry. Accordingly, computerized routing tools for routing interconnects for connecting blocks of circuitry have been developed to handle this data intensive task.
Associated with each interconnect is a time delay. This interconnect delay may be characterized from a driver to a load. Stated another way, there is a delay between the time when a signal leaves an output of one circuitry block and arrives as an input to another circuitry block. This delay may be associated with one or more types of delays, such as signal propagation delays and clock-to-output delays, among other known types of delays. Accordingly, target delays are respectively associated with connections. A slack on a connection is the difference between actual delay and target delay. A negative slack indicates that a target delay is not being met, and a positive: slack indicates that a target delay is being met. A path, formed by one or more connections has a path delay determined by the delay of its constituent connections. A path may have an associated delay target, in which case a xe2x80x9cpath slackxe2x80x9d is the difference between a path""s target and actual delay.
A routing tool in a delay routing mode is configured to at least attempt to obtain a minimum interconnect delay using time delay as a primary criteria for evaluating possible routing paths from one block of circuitry, a xe2x80x9cdriver,xe2x80x9d to another block of circuitry, a xe2x80x9cload.xe2x80x9d A routing tool in a resource (minimum resource) routing mode is configured to at least attempt to obtain a minimum number of resources using number of resources as a primary criteria for evaluating possible routing paths from a driver to a load. These different routing modes conventionally generate different results. Impact of these different routing modes may affect performance, for example operating frequency of an integrated circuit, and cost, such as die size.
Conventionally, in timing driven routing, slack allocation and analysis is done to determine delay targets for interconnects, and then these delay targets are used to at least attempt to produce routes for interconnects meeting such targets. In connection slack allocation, slack for a path is distributed or otherwise divided, not necessarily, equally among connections forming such a path. Thus, targets are provided for each connection in a path based on a portion of path slack. There are some limitations to this approach.
First, accurately predicting achievable interconnect delays is difficult. Conventionally, a heuristic based on fan out or current delay criteria is used. Moreover, this prediction is made even more difficult in integrated circuits that have different fan out characteristics based on programmed configuration, such as programmable logic devices (PLDs). Examples of such PLDs include, but are not limited to, Complex Programmable Logic Devices (CPLDs) and Field Programmable Gate Arrays (FPGAs).
Secondly, allocation of path slack among connections forming a path does not take into account, for example, whether a connection on such a path can exceed such a target, and whether it would be beneficial for such a target to be exceeded. A routing tool or xe2x80x9crouterxe2x80x9d operating in a mode to meet delay targets does not attempt to surpass such targets. In other words, beating, and not just meeting predicted targets can alleviate requirements from other connections with negative slack. In such instances exceeding interconnect delay targets, i.e., using less delay than targeted, can allow other interconnects not to meet their respective interconnect delay targets and still achieve overall circuit performance.
One modification to time-driven routing as described above is to perform slack allocation, for example with a timing engine, and then route critical interconnects in delay mode. However, this modification runs the timing engine quite often to capture the benefit of delay mode routing of the critical interconnects, and thus there is a cost of doing a timing analysis for each of such runs. If impact of exceeding requirements by routing in delay mode is not captured by rerunning the timing engine, then excessive work may be done on what appears to be a critical connection but is no longer critical, as routing of some other connection(s) upstream or downstream in its path has alleviated criticality of such a connection.
Conventionally, a critical interconnect is one in which path slack is a negative value. Thus, if a routed path delay does not meet a target path delay for a path, then a negative value for path slack results.
Accordingly, it would be both desirable and useful to provide method and apparatus for routing fewer interconnects though in a delay mode in order to meet the desired circuit performance. Moreover, it would be both desirable and useful to provide method and apparatus for routing interconnects with reduced runtime expense for timing updates.
An aspect of the present invention is a method for identifying routing for interconnects for an integrated circuit. Logic level value for the interconnects are identified. The interconnects are routed responsive to a first criteria. Timing information associated with the interconnects routed is updated. A set of at least one connection from the interconnects responsive to the updated timing information is assembled, where the at least one connection has a respective negative slack. A logic level of the logic levels responsive to at least a portion of the set is identified, and at least one connection for the identified logic level is rerouted responsive to a second criteria. Timing information is updated. This process of assembling sets and selecting logic levels to route responsive to the second criteria may be continued, until there are no more connections with negative slack, or all the connections with negative slack have been routed responsive to the second criteria.
An aspect of the present invention is a method for routing connections for a network. Logic levels for the network are identified. Connections of the network responsive to the logic levels are identified. Path slacks for the paths are obtained, and minimum path slacks are ascribed to each of the connections responsive to the path slacks.
An aspect of the present invention is a method for routing connections for a network. A threshold number, such as a maximum or a minimum, of the connections needed to traverse from each source object to each connection is identified, and logic levels are indexed in response to the threshold number of the connections identified.
An aspect of the present invention is a method for routing interconnects for a network. The network is characterized into logic levels having a property of independence, such as in relating to timing update, of connections within each of the logic levels, and the connections within a logic level are changed in state, such as by routing.